package ar.edu.utn.frba.dds.aterrizar;

import static org.junit.Assert.*;
import java.util.Date;
import org.junit.Before;
import org.junit.Test;
import ar.edu.utn.frba.dds.aterrizar.domain.fechas.ComparadorDeFechas;
import ar.edu.utn.frba.dds.aterrizar.domain.fechas.ConversorDeFormato;
import ar.edu.utn.frba.dds.aterrizar.domain.fechas.Formato;
import ar.edu.utn.frba.dds.aterrizar.domain.fechas.ISO;
import ar.edu.utn.frba.dds.aterrizar.domain.fechas.Latinoamericano;
import ar.edu.utn.frba.dds.aterrizar.domain.fechas.Norteamericano;

public class FechaTest {
	ConversorDeFormato conversor;
	ComparadorDeFechas comparador;
	Formato ISO;
	Date fecha1;
    Date fecha2;
    Date fecha3;
    
    @Before
    public void SetUp(){
    	conversor = new ConversorDeFormato();
    	conversor.agregarFormato(new ISO());
    	conversor.agregarFormato(new Latinoamericano());
    	conversor.agregarFormato(new Norteamericano());
    	comparador = new ComparadorDeFechas();
        fecha1 = conversor.convertirFecha("2012-12-22");
        fecha2 = conversor.convertirFecha("2012-12-25");
        fecha3 = conversor.convertirFecha("18/12/2012");
    }
    
    @Test
    public void testCalculoDeDiferenciaDeDiasConMismoFormato() {
    	assertEquals(3, comparador.diferenciaEntre(fecha1, fecha2));
    }
    
    @Test
    public void testCalculoDeDiferenciaDeDiasConDistintoFormato() {
    	assertEquals(4, comparador.diferenciaEntre(fecha1, fecha3));            
    }
    
    @Test
    public void testFechaAnterior(){
    	assertTrue(comparador.sosAnteriorA(fecha1, fecha2));
	}
    
    @SuppressWarnings("unused")
    @Test (expected = RuntimeException.class)
    public void testDiaNoParseable() {
		Date fecha = conversor.convertirFecha("2309/34/r12");
    }
                
}